#include <stdio.h>
#include "ofc/DConfig.h"
#include "ofc/DFile.h"

int main(int argc, char *argv[])
{
#ifdef HAVE_DCONFIG
  DConfigTree *tree = [DConfigTree new];
  DFile       *file = [DFile       new];
  
  char         name1[] = "example.ini";
  char         name2[] = "example2.ini";

  if ([file open :name1 :"r"])         // Open the config file
  {
    if ([tree read :file :name1])      // Read the config file
    {
      [file close];

      printf("Config %s the option Option1 in SectionA.\n",
          ([tree has :"SectionA" :"Option1"] ? "has" : "has not")); // Check for an option

      if ([tree set :"SectionB" :"Option2" :"Value2"])  // Insert an option
        printf("SectionB - Option2 succesfully inserted.\n");
      else
        printf("Could not insert an option for sectionB.\n");

      if ([tree remove :"SectionA" :"Option2"])  // Remove an option
        printf("SectionA - Option2 succesfully removed.\n");
      else
        printf("Could not remove option2 for sectionA.\n");

      if ([file open :name2 :"w"])     // Open the config file for writing
      {
        if ([tree write :file :name2]) // Write the modified config file
          printf("Config tree succesfully written in \"%s\".\n", name2);
        else
          printf("Could not write \"%s\".\n", name2);

        [file close];
      }
      else
        printf("Could not write \"%s\".\n", name2);
    }
    else
    {
      [file close];
      printf("Could not read \"%s\".\n", name1);
    }
  }
  else
    printf("Could not open \"%s\":%d.\n", name1, [file error]);

  [file free];                         // Cleanup
  [tree free];
#else
  printf("DConfig is not present in the library.\n");
#endif
  return 0;
}

